我們挑戰的第一個專案是Hello World,這聽起來很容易,不就是建立Spring Boot專案,然後打個Hello World就結束了嗎?然而,對於初學者來說,可能會有些挑戰性。
在正式開始前,我們可以先思考如何建立一個Spring Boot專案。有些人可能會嘗試打開IDE來新建一個專案,但新增的卻是Java專案,而不是Spring Boot專案,這就是我們下一節要學習的內容。
我們會使用 IntelliJ IDEA Community 來完成之後的專案,這是一個免費的 IDE。
下載時需要注意一下,別下載到 Ultimate,Ultimate 需要付費,只能試用 30 天。
在 Ultimate 的下方才是我們免費的 Community 版,選擇 exe 版本,安裝過程中一直按 Next 即可。
接著,我們將使用 Spring Initializr 來創建 Spring Boot 專案。這是 Spring 官方提供的快速配置工具,可以輕鬆設定專案的基本結構和Dependency。以下是設定專案時的一些重點:
設定完成後,點擊下方的GENERATE下載並解壓縮zip檔。
大家可以參考下圖設定專案
用 IntelliJ IDEA 打開剛解壓縮完成的專案,等待右下角的進度條完成,這表示 IDEA 正在處理我們的專案並下載所需的Dependency。
在src/main/java/com/helloworld/Hello/World下,新增一個名為Controller的Package,在裡面新增HelloWorldController.java,Controller的作用是接收HTTP request並回傳對應的內容。
以下是HelloWorldController.java的程式碼,如果在建立專案時修改了Group、Artifact,package的部分會有所不同
package com.helloworld.Hello.World.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String hello(){
return "Hello, World!";
}
}
儲存後,來到HelloWorldApplication.java,點擊public static void main左邊綠色的三角形啟動專案,只有第一次啟動專案才要這樣,以後我們可以直接在右上角的地方點擊綠色三角形啟動專案。
這時可能需要設定JDK,Version選擇17,Vendor推薦Amazon Corretto,按下Download等待完成後按OK。
打開瀏覽器前往http://localhost:8080/hello,可以看到網頁上顯示Hello, World!
如果出現Whitelabel Error Page可能是Controller資料夾的位置放錯了,正確的專案結構如下圖。
我們可以透過修改src/main/resources/application.properties變更專案使用的port,在application.properties添加這一行。
server.port=8081
現在我們要到http://localhost:8081/hello 才能看到Hello, World!
孔乙己說茴香豆的回有四種寫法。
而我們的HelloWorldController也有四種寫法,其中一種我們已經使用了,剩下的三種是
@ResponseBody
@Controller
public class HelloWorldController {
@RequestMapping("/hello")
public String hello(){
return "Hello, World!";
}
}
@ResponseBody
@Controller
@RequestMapping("/hello")
public class HelloWorldController {
@RequestMapping("")
public String hello(){
return "Hello, World!";
}
}
@RestController
@RequestMapping("/hello")
public class HelloWorldController {
@RequestMapping("")
public String hello(){
return "Hello, World!";
}
}
前面那兩種使用@ResponseBody和@Controller比較像炫技的寫法,這邊寫出來是為了讓大家瞭解可以用@ResponseBody和@Controller完成@RestController的功能。
最後一種,現在看不出它的優勢,在下一個專案我們就能看出它的優點,這邊提供一個範例。
public class HelloWorldController {
@RequestMapping("/hello")
public String hello(){
return "Hello, World!";
}
@RequestMapping("/hello/spring")
public String hello(){
return "Hello, Spring!";
}
}
我們用第三種的方式改寫,就能少打一些/hello了。
@RequestMapping("/hello")
public class HelloWorldController {
@RequestMapping("")
public String hello(){
return "Hello, World!";
}
@RequestMapping("/spring")
public String hello(){
return "Hello, Spring!";
}
}
在這邊將完成的專案,提供給大家。
如果專案無法運行,可以用來比對程式哪邊有錯。
https://mega.nz/file/oU0TEA5a#bQntVal2ohH5S3J4FDDkVBxpeq2K8qa8NO-Ld6HALU8